Organization of a bitmap defines image dimensions and image orientation, i.e., portrait or landscape. An image is portrait-oriented if its height is greater than its width, and landscape-oriented if its width is greater than its height. FIG. 1(a) depicts a landscape-oriented image bitmap. The width (WI) of the image is greater than its height (HI). FIG. 2(a) depicts a portrait-oriented image bitmap. HI is greater than WI. The arrows in both corresponding FIGS. 1(a) and 2(a) illustrate software addressing patterns in which pixels values are typically stored to bitmap storage.
To maximize the duty cycle of the display, i.e. to minimize the period of time between successive refresh cycles of a given scan line, display devices such as Cathode Ray Tubes (CRTs) or Liquid Crystal Displays (LCDs) are typically landscape-configured. That is, display devices have physical address schemes which cause pixels to be refreshed in a landscape-oriented pattern. As can be seen by the arrows in FIG. 1(b), the typical landscape-oriented display""s refresh operation starts at the top left corner and continues rightward across the first row and downward through the rows.
For some computer systems or applications, it is desirable to have a portrait-oriented display. In such a system, the CRT or LCD would be physically rotated ninety degrees. The arrows in FIG. 2(b) illustrate that, for the physically rotated display, the refresh address scheme is still landscape-oriented: it begins at the original pixel location (rotated ninety degrees counter-clockwise to the bottom left corner now) and continues in the same order.
The software addressing pattern depicted in FIG. 1(a) is the same as the physical address pattern depicted in FIG. 1(b), so landscape-oriented software addresses to landscape-oriented physical addresses do not need to be translated. However, the software addressing pattern depicted in FIG. 2(a) is not the same as the physical address pattern depicted in FIG. 2(b). Thus, portrait-oriented image addresses need translation to a physical address for a portrait-oriented landscape-configured display.
Existing display systems rotate an image ninety degrees by using a program or a special driver to translate software addresses to physical addresses. When the typical rotation program is instructed to draw a bitmap sequence, the program first performs software translation operations to determine new pixel coordinates when rotated 90xc2x0, and then performs the drawing operation using those translated coordinates. In some particular drawing operations, additional software may be necessary to treat the rotated drawing as a xe2x80x9cspecial case.xe2x80x9d For example, to draw text characters in a rotated graphics display would require retrieving the bitmapped font pixels from font storage in a rotated orientation rather than the normal byte-wise unrotated orientation in which the font data is stored. This may require several additional memory cycles to retrieve this rotated bitmapped font data for just a single line of a given character. In general, the large number of additional read and translation operations for any drawing operation to rotate an image consumes substantial computer processing resources and time. These problems are compounded when larger or more-complex images are rotated.
Additional complexity can arise when the input signal has come to represent a mirrored version of the intended image. This can occur in the situations in which, say, a video camera in a videoconferencing environment is oriented in a normal, horizontal orientation to view human participants but is also provided with a mirror to deflect the field of view downward onto a document. Some systems deal with this reversal by employing video cameras that can reverse their scans. However, this option imposes a significant cost penalty.
We have developed a way to provide a low-cost way of dealing with the mirror-image problem while at the same time increasing flexibility in portrait-to-landscape conversions. The parent patent application mentioned above addresses the problem of converting between portrait and landscape orientations by performing a conversion of the input address values used to designate the picture locations of picture elements represented by accompanying pixel data. The conversion transforms a pixel""s location in a portrait-oriented image into the address of a refresh-memory location that holds data for the corresponding position on a landscape-refreshed display device. Consequently, generating refresh data for the display by scanning the refresh memory in the order corresponding to the display device""s scan organization results in the intended appearance if the display device, although being scanned in a landscape manner, is disposed in the correct portrait orientation.
We have recognized that the usefulness of this orientation adjustment can be extended by including a provision for reversing the progression of refresh addresses applied to the refresh memory when the memory""s contents are being fetched for application to the display. Specifically, we provide two row-addressing modes and two-column-addressing modes. In one of the column-addressing modes, the progression of column addresses within a row results in increasing column addresses, while it decreases in the other column-addressing mode. Similarly, the row addresses increase as the corresponding display device advances from row to row along its screen if the refresh-address generator is in its row-forward mode, but they decrease if it is in its row-reverse mode.
By thus selectively reversing refresh-address generation, the display system can compensate for mirrored camera images both when the camera is in a portrait orientation and when it is in a landscape orientation. Additionally, by reversing both the refresh-address generation""s row scanning and its column scanning, a 90xc2x0 transformation in one direction performed by refresh-address transformation circuitry to convert from portrait to one landscape orientation can be transformed to the opposite 90xc2x0 to convert to the other landscape orientation. So providing a simple reversal of column and row scans in refresh-address generation can greatly increase the flexibility afforded by an update-address-transformation circuit that performs a 90xc2x0 rotation in a fixed direction. Also, both reversals can be used without the 90xc2x0-rotation circuitry and thereby afford the effect provided by, for example, certain existing camcorders, of rotating the image by 180xc2x0 to facilitate viewfinding from otherwise awkward positions.
Other objects and attainments together with a fuller understanding of the invention will become apparent and appreciated by referring to the following description and claims taken in conjunction with the accompanying drawings.